//60%Points k==1 & 1->k->n

#include<bits/stdc++.h>
#include <cstdlib>
using namespace std;

struct Node{
    vector<int> next;
    int t;
};

const int MAX_N = 2e5+5;
int n,m,k;
Node nodes[MAX_N];

int readint();
void AC_KE_Q1();

int main(){
    n=readint(),m=readint(),k=readint();
    for(int i=1;i<=n;i++){
        nodes[i].t=readint();
    }
    for(int i=1;i<=m;i++){
        const int u=readint(),v=readint();
        nodes[u].next.push_back(v);
        nodes[v].next.push_back(u);
    }
    if(k==1){AC_KE_Q1();exit(0);}
    int uNum=k-1;
    cout<<"P";
    for(int i=2;i<n;i++){
        if(uNum){
            uNum--;
            cout<<"U";
        }else{
            cout<<"P";
        }
    }
    cout<<"U"<<endl;
}



void AC_KE_Q1(){
    bool isUPrint = false;
    for(int i=1;i<=n;i++){
        if (!isUPrint) {
            bool canPrint = true;
            for(auto i:nodes[i].next){
                if(i==n){
                    canPrint=false;
                    break;
                }
            }
            if(canPrint){
                cout<<"U";
                isUPrint=true;
                goto printed;
            }
        }
        cout<<"P";
        printed:;
    }
    cout<<endl;
}

int readint(){
    int x=0,w=1;
    char ch=0;
    while(!isdigit(ch)){
        if(ch=='-')w=-1;
        ch=getchar();
    }
    while(isdigit(ch)){
        x=x*10+(ch-'0');
        ch=getchar();
    }
    return x*w;
}